using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._WorkflowManagerTools._Configuration
{
    /// <summary>
    /// <para>Replicate Job Data</para>
    /// <para>Replicates the ArcGIS Workflow Manager (Classic) configuration from a parent repository to child repositories using ArcGIS Workflow Manager (Classic) Server. Each child repository  becomes an identical copy (replica) of the parent repository.</para>
    /// <para>使用 ArcGIS Workflow Manager （Classic） Server 将 ArcGIS Workflow Manager （Classic） 配置从父资料档案库复制到子资料档案库。每个子存储库都将成为父存储库的相同副本（副本）。</para>
    /// </summary>    
    [DisplayName("Replicate Job Data")]
    public class CreateJobDataReplica : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public CreateJobDataReplica()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_Input_Parent_Repository_URL">
        /// <para>Parent Repository URL</para>
        /// <para>The URL for the parent repository as the Workflow Manager (Classic) service URL, for example, http://localhost/arcgis/rest/services/parent/wmserver.</para>
        /// <para>例如，作为 Workflow Manager （Classic） 服务 URL 的父资料档案库的 URL http://localhost/arcgis/rest/services/parent/wmserver。</para>
        /// </param>
        /// <param name="_Input_Parent_Repository_Name">
        /// <para>Parent Repository Name</para>
        /// <para>The name of the parent repository that will distribute the Workflow Manager (Classic) jobs and configuration elements.</para>
        /// <para>将分发 Workflow Manager （Classic） 作业和配置元素的父资料档案库的名称。</para>
        /// </param>
        /// <param name="_Input_Multi_Name">
        /// <para>Child Repository Names and URLs</para>
        /// <para><xdoc>
        ///   <para>The child repositories that will be updated with the parent repository configuration. To add a child repository, provide the repository name and click the Add button. After adding the child, provide values for Connected and URL as follows:
        ///   <bulletList>
        ///     <bullet_item>Connected—Enter true if the child is a connected replication. Enter false if the child is a disconnected replication.  </bullet_item><para/>
        ///     <bullet_item>URL—If Connected is true, provide the URL of the child repository. If Connected is false, provide a folder location to contain the configuration file exported from the parent repository.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>将使用父存储库配置更新的子存储库。要添加子存储库，请提供存储库名称，然后单击“添加”按钮。添加子项后，为 Connected 和 URL 提供值，如下所示：
        ///   <bulletList>
        ///     <bullet_item>已连接 - 如果子项是已连接的副本，则输入 true。如果子项是断开连接的复制，则输入 false。 </bullet_item><para/>
        ///     <bullet_item>URL - 如果 Connected 为 true，请提供子存储库的 URL。如果 Connected 为 false，请提供文件夹位置以包含从父存储库导出的配置文件。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// </param>
        public CreateJobDataReplica(object _Input_Parent_Repository_URL, object _Input_Parent_Repository_Name, object _Input_Multi_Name)
        {
            this._Input_Parent_Repository_URL = _Input_Parent_Repository_URL;
            this._Input_Parent_Repository_Name = _Input_Parent_Repository_Name;
            this._Input_Multi_Name = _Input_Multi_Name;
        }
        public override string ToolboxName => "Workflow Manager Tools";

        public override string ToolName => "Replicate Job Data";

        public override string CallName => "wmx.CreateJobDataReplica";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_Input_Parent_Repository_URL, _Input_Parent_Repository_Name, _Input_Multi_Name, _Output_CreateReplicaStatus, _Output_LastSync];

        /// <summary>
        /// <para>Parent Repository URL</para>
        /// <para>The URL for the parent repository as the Workflow Manager (Classic) service URL, for example, http://localhost/arcgis/rest/services/parent/wmserver.</para>
        /// <para>例如，作为 Workflow Manager （Classic） 服务 URL 的父资料档案库的 URL http://localhost/arcgis/rest/services/parent/wmserver。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Parent Repository URL")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Input_Parent_Repository_URL { get; set; }


        /// <summary>
        /// <para>Parent Repository Name</para>
        /// <para>The name of the parent repository that will distribute the Workflow Manager (Classic) jobs and configuration elements.</para>
        /// <para>将分发 Workflow Manager （Classic） 作业和配置元素的父资料档案库的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Parent Repository Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Input_Parent_Repository_Name { get; set; }


        /// <summary>
        /// <para>Child Repository Names and URLs</para>
        /// <para><xdoc>
        ///   <para>The child repositories that will be updated with the parent repository configuration. To add a child repository, provide the repository name and click the Add button. After adding the child, provide values for Connected and URL as follows:
        ///   <bulletList>
        ///     <bullet_item>Connected—Enter true if the child is a connected replication. Enter false if the child is a disconnected replication.  </bullet_item><para/>
        ///     <bullet_item>URL—If Connected is true, provide the URL of the child repository. If Connected is false, provide a folder location to contain the configuration file exported from the parent repository.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>将使用父存储库配置更新的子存储库。要添加子存储库，请提供存储库名称，然后单击“添加”按钮。添加子项后，为 Connected 和 URL 提供值，如下所示：
        ///   <bulletList>
        ///     <bullet_item>已连接 - 如果子项是已连接的副本，则输入 true。如果子项是断开连接的复制，则输入 false。 </bullet_item><para/>
        ///     <bullet_item>URL - 如果 Connected 为 true，请提供子存储库的 URL。如果 Connected 为 false，请提供文件夹位置以包含从父存储库导出的配置文件。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Child Repository Names and URLs")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Input_Multi_Name { get; set; }


        /// <summary>
        /// <para>Create Replica Status</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Create Replica Status")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public long? _Output_CreateReplicaStatus { get; set; }


        /// <summary>
        /// <para>Last Syncronized</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Last Syncronized")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _Output_LastSync { get; set; }


        public CreateJobDataReplica SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}